home *** CD-ROM | disk | FTP | other *** search
/ Scene 96 / Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso / misc / coding / pump_src / setup / output.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-10-26  |  15.8 KB  |  478 lines

  1. {$A+,B-,D+,E-,F-,G+,I-,L+,N-,O-,R-,S-,V-,X+}
  2. UNIT Output;
  3.  
  4.    (* Copyright by Jare/Iguana in 1993, but given to the public domain. *)
  5.    (* Want more comments? Write'em!                                     *)
  6.  
  7.    (*   Performs screen output functions tailor-made for this setup. I  *)
  8.    (* don't see much of this unit reused for other programs, but anyway *)
  9.    (* who knows?                                                        *)
  10.  
  11.  
  12. INTERFACE
  13.  
  14. PROCEDURE InitScreen;
  15.  
  16. PROCEDURE EndScreen;
  17.  
  18. PROCEDURE DumpLine(s : STRING; col : BYTE; y : BYTE);
  19.  
  20. PROCEDURE DumpDevice(s : STRING);
  21.  
  22. PROCEDURE DumpLang(s : STRING);
  23.  
  24. PROCEDURE ClearArea;
  25.  
  26. PROCEDURE ClearScreen(VAR p); 
  27.  
  28. PROCEDURE DumpScreen(VAR p);
  29.  
  30. PROCEDURE SetScanStart(i : WORD);
  31.  
  32. PROCEDURE SplitOut;
  33.  
  34. PROCEDURE SplitIn;
  35.  
  36.  
  37.  
  38. TYPE
  39.    TScr = ARRAY [1..25*8,1..80,0..1] OF BYTE;
  40.  
  41. VAR
  42.    scr : TScr ABSOLUTE $B800:0;
  43.  
  44. CONST
  45.    lens : ARRAY [1..13] OF INTEGER = (
  46.       29,
  47. {      46, 46, 46, 46,}
  48.       29, 29, 29, 29,
  49.       29, 29, 29, 29,
  50.       29, 29, 29, 29
  51. );
  52.  
  53.    defcol = 0*16+15;
  54.  
  55.  
  56.  
  57.    (* ========================================= *)
  58.  
  59. IMPLEMENTATION
  60.  
  61. USES Gfx;
  62.  
  63.  
  64. PROCEDURE InitScreen;
  65.   BEGIN
  66.      ASM
  67.         CLD
  68.         PUSH ES
  69.         MOV  AX,3
  70.         INT  10h
  71.         MOV  AX,SEG(scr)
  72.         MOV  ES,AX
  73.         MOV  CX,80*25*4
  74.         XOR  DI,DI
  75.         XOR  AX,AX
  76.         REP STOSW
  77.         POP  ES
  78.      END;
  79.   {   SetScrStart(80*25*2)}
  80.   END;
  81.  
  82. PROCEDURE EndScreen;
  83.   BEGIN
  84.      ASM
  85.         MOV  AX,3
  86.         INT  10h
  87.      END
  88.   END;
  89.  
  90.  
  91.  
  92.  
  93. PROCEDURE DumpLine(s : STRING; col : BYTE; y : BYTE);
  94.   VAR
  95.      i : BYTE;
  96.      len : INTEGER;
  97.   BEGIN
  98.      IF (y >= 13) THEN EXIT;
  99.      INC(y);
  100.      IF (col = 0) THEN col := defcol;
  101.      IF (Length(s) < lens[y]) THEN
  102.         len := Length(s)
  103.      ELSE
  104.         len := lens[y];
  105.  
  106.      FOR i := 1 TO len DO BEGIN
  107.          Scr[8+y, 8+16+i, 0] := BYTE(s[i]);
  108.          Scr[8+y, 8+16+i, 1] := col
  109.      END;
  110.      IF len < Lens[y] THEN
  111.         FOR i := len+1 TO Lens[y] DO BEGIN
  112.            Scr[8+y, 8+16+i, 0] := 32;
  113.            Scr[8+y, 8+16+i, 1] := col
  114.         END;
  115.   END;
  116.  
  117.  
  118. PROCEDURE DumpDevice(s : STRING);
  119.   VAR
  120.      i, m : INTEGER;
  121.   BEGIN
  122.      i := 1;
  123.      WHILE (i <= Length(s)) AND (s[i] = ' ') DO
  124.        INC(i);
  125.      m := i;
  126.      FOR i := m TO Length(s) DO BEGIN
  127.          Scr[25, i-m+5, 0] := BYTE(s[i]);
  128.          Scr[25, i-m+5, 1] := 9
  129.      END;
  130.      IF Length(s) < 80 THEN
  131.         FOR i := Length(s)+1 TO 73 DO BEGIN
  132.            Scr[23, i-m+5, 0] := 32;
  133.            Scr[23, i-m+5, 1] := 10
  134.         END;
  135.   END;
  136.  
  137. PROCEDURE DumpLang(s : STRING);
  138.   VAR
  139.      i, m : INTEGER;
  140.   BEGIN
  141.      i := 1;
  142.      WHILE (i <= Length(s)) AND (s[i] = ' ') DO
  143.        INC(i);
  144.      m := i;
  145.      FOR i := m TO Length(s) DO BEGIN
  146.          Scr[22, i-m+5, 0] := BYTE(s[i]);
  147.          Scr[22, i-m+5, 1] := 15
  148.      END;
  149.      IF Length(s) < 20 THEN
  150.         FOR i := Length(s)+1 TO 20 DO BEGIN
  151.            Scr[22, i-m+5, 0] := 32;
  152.            Scr[22, i-m+5, 1] := 10
  153.         END;
  154.   END;
  155.  
  156.  
  157. PROCEDURE ClearArea;
  158.   VAR
  159.      i,j : BYTE;
  160.   BEGIN
  161.      FOR i := 1 TO 13 DO
  162.         FOR j := 1 TO lens[i] DO BEGIN
  163.            Scr[8+i, 8+16+j, 0] := 32;
  164.            Scr[8+i, 8+16+j, 1] := defcol
  165.         END;
  166.   END;
  167.  
  168.  
  169. PROCEDURE ClearScreen(VAR p); ASSEMBLER;
  170.   ASM
  171.        CLD
  172.        PUSH ES
  173.        LES DI,p
  174.        MOV CX,80*25
  175.        XOR AX,AX
  176.        REP STOSW
  177.        POP ES
  178.   END;
  179.  
  180.  
  181. PROCEDURE DumpScreen(VAR p); ASSEMBLER;
  182.   ASM
  183.        CLD
  184.        PUSH ES
  185.        PUSH DS
  186.        MOV AX,CS
  187.        MOV DS,AX
  188.        MOV SI,OFFSET @@scr
  189.        LES DI,p
  190.        MOV CX,80*25
  191.        REP MOVSW
  192.        POP DS
  193.        POP ES
  194.        JMP @@bye
  195.      @@scr:
  196. ; (*----- File created with BIN2DB from file setup.bin. -----*)
  197.  
  198.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  199.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  200.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  201.  DB 32,3,32,3,32,3,32,3,32,15,32,3,32,3,32,3,32,3,32,3
  202.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  203.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  204.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  205.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  206.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  207.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  208.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  209.  DB 32,3,32,3,32,3,32,3,250,9,80,11,250,9,85,11,250,9,77,11
  210.  DB 250,9,80,11,250,9,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  211.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  212.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  213.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  214.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  215.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  216.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  217.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  218.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  219.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  220.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  221.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  222.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  223.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  224.  DB 32,3,32,3,65,3,32,3,112,3,97,9,114,9,116,9,121,9,32,9
  225.  DB 99,3,111,9,100,9,105,9,110,9,103,9,32,9,101,3,120,9,112,9
  226.  DB 101,9,114,9,105,9,109,9,101,9,110,9,116,9,32,9,98,3,121,9
  227.  DB 32,9,73,3,103,9,117,9,97,9,110,9,97,9,32,3,32,3,32,3
  228.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  229.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  230.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  231.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  232.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  233.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  234.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  235.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  236.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  237.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  238.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  239.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  240.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  241.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  242.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  243.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  244.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  245.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  246.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  247.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  248.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  249.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  250.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  251.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  252.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  253.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  254.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  255.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  256.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  257.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  258.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  259.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  260.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  261.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  262.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  263.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  264.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  265.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  266.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  267.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  268.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  269.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  270.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  271.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  272.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  273.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  274.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  275.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  276.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  277.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  278.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  279.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  280.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  281.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  282.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  283.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  284.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  285.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  286.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  287.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  288.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  289.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  290.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  291.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  292.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  293.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  294.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  295.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  296.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  297.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  298.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  299.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  300.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  301.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  302.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  303.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  304.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  305.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  306.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  307.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  308.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  309.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  310.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  311.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  312.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  313.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  314.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  315.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  316.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  317.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  318.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  319.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  320.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  321.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  322.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  323.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  324.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  325.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  326.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  327.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  328.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  329.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  330.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  331.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  332.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  333.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  334.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  335.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  336.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  337.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  338.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  339.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  340.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  341.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  342.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  343.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  344.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  345.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  346.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  347.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  348.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  349.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  350.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  351.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  352.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  353.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  354.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  355.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  356.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  357.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  358.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  359.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  360.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  361.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  362.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  363.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  364.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  365.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  366.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  367.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  368.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  369.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  370.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  371.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  372.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  373.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  374.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  375.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  376.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  377.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  378.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  379.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  380.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  381.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  382.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  383.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  384.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  385.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  386.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  387.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  388.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  389.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  390.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  391.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  392.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  393.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  394.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  395.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  396.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  397.  DB 32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3,32,3
  398.      @@bye:
  399.   END;
  400.  
  401.  
  402. PROCEDURE SetScanStart(i : WORD);
  403.   VAR
  404.      j : INTEGER;
  405.   BEGIN
  406.      WaitForDisplay;
  407.      SetScrStart(((i DIV 16))*80);
  408.      WaitForRetrace;
  409.      PresetRowScan(i);
  410.   END;
  411.  
  412.  
  413. CONST
  414.    wh : BOOLEAN = TRUE;
  415. PROCEDURE SetSplitScan(s : INTEGER);
  416.    VAR
  417.       i : WORD;
  418.    BEGIN
  419.       IF wh THEN
  420.          i := s
  421.       ELSE
  422.          i := {2*25*16-}s;
  423.       SetScanStart(i);
  424.       wh := NOT wh
  425.    END;
  426.  
  427. VAR
  428.    Poss  : ARRAY [1..100] OF WORD;
  429.    NPoss : INTEGER;
  430.  
  431.  
  432. PROCEDURE SplitOut;
  433.   VAR
  434.      i   : INTEGER;
  435.   BEGIN
  436.      DumpScreen(scr[26]);
  437.      SetScanStart(25*16);
  438.      ClearScreen(scr[1]);
  439.      ClearScreen(scr[51]);
  440.  
  441.      FOR i := 1 TO NPoss DO
  442.         SetSplitScan(Poss[i]);
  443.   END;
  444.  
  445.  
  446. PROCEDURE SplitIn;
  447.   VAR
  448.      i : INTEGER;
  449.   BEGIN
  450.      DumpScreen(scr[26]);
  451.      ClearScreen(scr[1]);
  452.      ClearScreen(scr[51]);
  453.      FOR i := NPoss DOWNTO 1 DO
  454.         SetSplitScan(Poss[i]);
  455.  
  456.      DumpScreen(scr[1]);
  457.      SetScanStart(0);
  458.      ClearScreen(scr[26])
  459.   END;
  460.  
  461.  
  462. VAR
  463.    vel, i, n : INTEGER;
  464.  
  465. BEGIN
  466.    n := 1;
  467.    vel := 0;
  468.    i := 25*16;
  469.    REPEAT
  470.       Poss[n] := i;
  471.       i := i - vel DIV 5;
  472.       vel := vel+1;
  473.       INC(n);
  474.    UNTIL i <= 0;
  475.    NPoss := n-1;
  476. END.
  477.  
  478.